package com.ruoyi.zxjd.work.mapper;

import java.util.List;
import com.ruoyi.zxjd.work.domain.WorkArrange;
import com.ruoyi.zxjd.work.domain.WorkForm;
import com.ruoyi.zxjd.work.domain.WorkProgress;

import org.apache.ibatis.annotations.Param;

/**
 * 工作安排Mapper接口
 * 
 * @author lcc
 * @date 2021-01-26
 */
public interface WorkArrangeMapper 
{
    /**
     * 查询工作安排
     * 
     * @param arrangeId 工作安排ID
     * @return 工作安排
     */
    public WorkArrange selectWorkArrangeById(Long arrangeId);

    /**
     * 查询工作安排列表
     * 
     * @param workArrange 工作安排
     * @return 工作安排集合
     */
    public List<WorkArrange> selectWorkArrangeList(WorkArrange workArrange);

    /**
     * 新增工作安排
     * 
     * @param workArrange 工作安排
     * @return 结果
     */
    public int insertWorkArrange(WorkArrange workArrange);

    /**
     * 修改工作安排
     * 
     * @param workArrange 工作安排
     * @return 结果
     */
    public int updateWorkArrange(WorkArrange workArrange);

    /**
     * 删除工作安排
     * 
     * @param arrangeId 工作安排ID
     * @return 结果
     */
    public int deleteWorkArrangeById(Long arrangeId);

    /**
     * 批量删除工作安排
     * 
     * @param arrangeIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteWorkArrangeByIds(String[] arrangeIds);

    /**
     * 批量删除工作进度
     * 
     * @param customerIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteWorkProgressByArrangeIds(String[] arrangeIds);

    /**
     * 批量删除工作进度表单
     * 
     * @param customerIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteWorkFormByArrangeIds(String[] arrangeIds);
    
    /**
     * 批量新增工作进度
     * 
     * @param workProgressList 工作进度列表
     * @return 结果
     */
    public int batchWorkProgress(List<WorkProgress> workProgressList);

    /**
     * 批量新增工作进度表单
     * 
     * @param workFormList 工作进度表单列表
     * @return 结果
     */
    public int batchWorkForm(List<WorkForm> workFormList);

    /**
     * 通过工作安排ID删除工作进度信息
     * 
     * @param roleId 角色ID
     * @return 结果
     */
    public int deleteWorkProgressByArrangeId(Long arrangeId);

    /**
     * 通过工作安排ID删除填报表单信息
     * 
     * @param roleId 角色ID
     * @return 结果
     */
    public int deleteWorkFormByArrangeId(Long arrangeId);

    /**
     * 通过工作安排ID修改工作安排状态
     * 
     * @param arrangeId 工作安排ID
     * @param status 工作状态（1草稿 2进行中 3已完成）
     * @return
     */
    public int updateStatusByArrangeId(@Param("arrangeId") Long arrangeId,@Param("status") String status);

    /**
     * 通过工作安排ID修改工作进度发布状态
     * 
     * @param arrangeId 工作安排ID
     * @param status 发布状态（0未发布 1已发布）
     * @return
     */
    public int updateReleaseStatusByArrangeId(@Param("arrangeId") Long arrangeId,@Param("releaseStatus") String releaseStatus);
    
    /**
     * 通过工作安排ID查询工作进度发布范围
     * 
     * @param arrangeId 工作安排ID
     * @return 发布用户ID列表
     */
	public String[] selectReceiveUserByArrangeId(Long arrangeId);

    /**
     * 更新未上报人数
    * @param arrangeId 工作安排ID
    * @param num 更新人数（加 减）
     */
	public int updateUnfillTotal(@Param("arrangeId") Long arrangeId,@Param("num") int num);
    
}
